// SCENARIO SCRIPT

// This is the special script for your entire scenario. It contains
// special encounters and code accessable from anywhere in the scenario. it also
// contains the code that initializes important special things in the
// scenario (like shops and names and descriptions of special items).

// You can create your own states, but you should give all of them numbers greater than
// or equal to 10.

// global flags:
// 50, 0 = have gotten quest to retrieve amulet
// 50, 1 = have completed amulet quest (killed Werdna)
// 50, 2 = killed Trebor too...
// 50, 3 = gave amulet to Trebor
// 99, 1 - 99, 8 = trap disarm flags (10th level chests)
// 100, 0 = monster generated (for levels 1 - 9)
// 100, 1 = x position to place monster
// 100, 2 = y position to place monster

beginscenarioscript;

variables;

short i, j, e, x, y, tt, lvl, mlvl, choice, daypassed, bg, en;

body;

// This is the state that is called every time the scenario is loaded,
// even when a save file in the scenario is loaded. Some things that should go here:
//    Names and descriptions of special items.
//    Names and effects of custom special abilities.
beginstate LOAD_SCEN_STATE;
	// quests (only one with this scenario)
	init_quest(0, "Recover amulet", "Trebor has challenged you to recover the amulet of power from the maze beneath the castle.");

	// special items
	init_special_item(1, "Blue Ribbon", "A thin blue ribbon.  Seems to glow with a special power.");
	init_special_item(2, "Key of Bronze", "A large bronze key stamped with 'proving grounds'.");
	init_special_item(3, "Silver Key", "An old silver key.  Probably not worth much.");
	init_special_item(4, "Key of Gold", "A small key made of gold.");
	init_special_item(5, "Statue of Frog", "A small metal statue of a frog.  Could be a key to something.");
	init_special_item(6, "Statue of Bear", "A small stone statue of a bear.  Could be a key to something.");
break;

// This is the state that is called only once at the very beginning of 
// the scenario. Some things that should go here:
//    The stuff in shops.
//    Creating horses and boats.
beginstate START_SCEN_STATE;
	// Initialize a few shops.
	
	// Shop 0 - Gilgamesh's Tavern
	add_item_to_shop(0, 4, 500);
	add_item_to_shop(0, 6, 500);
	add_item_to_shop(0, 7, 500);
	add_item_to_shop(0, 8, 500);
	add_item_to_shop(0, 12, 500);

	// Shop 1 - Boltac's
	add_item_to_shop(1, get_ran(1, 26, 28), get_ran(1, 1, 3));
	add_item_to_shop(1, get_ran(1, 31, 33), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 46, 48), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 51, 53), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 56, 58), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 71, 73), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 91, 93), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 96, 98), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 101, 103), get_ran(1, 10, 100));
	add_item_to_shop(1, get_ran(1, 106, 108), get_ran(1, 10, 100));
	add_item_to_shop(1, get_ran(1, 122, 124), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 127, 129), get_ran(1, 1, 2));
	add_item_to_shop(1, get_ran(1, 137, 139), get_ran(1, 1, 3));
	add_item_to_shop(1, get_ran(1, 146, 148), get_ran(1, 1, 2));
	
	// Shop 2 - Boltac's Annex
	add_item_to_shop(2, get_ran(1, 174, 176), get_ran(1, 5, 15));
	add_item_to_shop(2, 178, get_ran(1, 10, 20));
	add_item_to_shop(2, 244, get_ran(1, 2, 5));
	add_item_to_shop(2, 248, get_ran(1, 2, 5));
	add_item_to_shop(2, 250, get_ran(1, 2, 5));
	add_item_to_shop(2, 254, get_ran(1, 2, 5));
	add_item_to_shop(2, 257, get_ran(1, 1, 3));
	add_item_to_shop(2, get_ran(1, 271, 276), get_ran(1, 1, 2));
	add_item_to_shop(2, get_ran(1, 282, 289), get_ran(1, 1, 2));
	add_item_to_shop(2, get_ran(1, 294, 300), get_ran(1, 1, 2));
	add_item_to_shop(2, get_ran(1, 302, 310), get_ran(1, 1, 2));
	if (get_ran(1, 1, 100) > 50) {
		add_item_to_shop(2, 352, get_ran(1, 10, 20));
	}
	if (get_ran(1, 1, 100) > 50) {
		add_item_to_shop(2, 355, get_ran(1, 10, 20));
	}
	if (get_ran(1, 1, 100) > 75) {
		add_item_to_shop(2, 381, get_ran(1, 1, 2));
	}

	// Shop 3 - Wanderer
	add_item_to_shop(3, 220, get_ran(1, 5, 10));
	add_item_to_shop(3, 221, get_ran(1, 5, 10));
	add_item_to_shop(3, 222, get_ran(1, 5, 10));
	add_item_to_shop(3, 223, get_ran(1, 5, 10));
	add_item_to_shop(3, 225, get_ran(1, 5, 10));
	add_item_to_shop(3, 226, get_ran(1, 1, 3));
	add_item_to_shop(3, 227, get_ran(1, 1, 3));
	add_item_to_shop(3, 228, get_ran(1, 1, 5));
	add_item_to_shop(3, 229, get_ran(1, 1, 5));
	add_item_to_shop(3, 230, get_ran(1, 1, 5));
	add_item_to_shop(3, 231, get_ran(1, 1, 5));
	add_item_to_shop(3, 233, get_ran(1, 1, 5));
	add_item_to_shop(3, 234, get_ran(1, 1, 2));
	add_item_to_shop(3, 235, get_ran(1, 1, 2));
	if (get_ran(1, 1, 100) > 50) {
		add_item_to_shop(3, 335, get_ran(1, 1, 2));
	}
	if (get_ran(1, 1, 100) > 50) {
		add_item_to_shop(3, 337, get_ran(1, 1, 2));
	}
	if (get_ran(1, 1, 100) > 50) {
		add_item_to_shop(3, 360, get_ran(1, 1, 2));
	}
	if (get_ran(1, 1, 100) > 50) {
		add_item_to_shop(3, 368, get_ran(1, 1, 2));
	}

	// shop 4 - priest spells / June
	add_item_to_shop(4, 3005, 5);
	add_item_to_shop(4, 3008, 5);
	add_item_to_shop(4, 3009, 5);
	add_item_to_shop(4, 3010, 5);
	add_item_to_shop(4, 3011, 4);
	add_item_to_shop(4, 3012, 4);
	add_item_to_shop(4, 3013, 4);
	add_item_to_shop(4, 3014, 3);
	add_item_to_shop(4, 3016, 3);
	add_item_to_shop(4, 3017, 3);
	add_item_to_shop(4, 3018, 2);
	add_item_to_shop(4, 3019, 2);

	// shop 5 - mage spells / Am
	add_item_to_shop(5, 2004, 5);
	add_item_to_shop(5, 2007, 5);
	add_item_to_shop(5, 2009, 5);
	add_item_to_shop(5, 2010, 5);
	add_item_to_shop(5, 2011, 4);
	add_item_to_shop(5, 2012, 4);
	add_item_to_shop(5, 2013, 4);
	add_item_to_shop(5, 2014, 3);
	add_item_to_shop(5, 2016, 3);
	add_item_to_shop(5, 2017, 3);
	add_item_to_shop(5, 2018, 2);
	add_item_to_shop(5, 2019, 2);
break;

// This state is called every tick wherever the party is in the scenario.
// You can use the set_state
beginstate START_STATE;
	// reset herbs
	daypassed = get_current_tick() % 5000;
	if (daypassed == 0) {
		print_str_color("A new day is starting.", 3);
		if (get_flag(0, 1) > 0)
			inc_flag(0, 1, -1);
		if (get_flag(0, 2) > 0)
			inc_flag(0, 2, -1);
		if (get_flag(0, 3) > 0)
			inc_flag(0, 3, -1);
		if (get_flag(0, 4) > 0)
			inc_flag(0, 4, -1);
		if (get_flag(0, 5) > 0)
			inc_flag(0, 5, -1);
		if (get_flag(0, 6) > 0)
			inc_flag(0, 6, -1);
		if (get_flag(0, 7) > 0)
			inc_flag(0, 7, -1);
		if (get_flag(0, 8) > 0)
			inc_flag(0, 8, -1);
		if (get_flag(0, 9) > 0)
			inc_flag(0, 9, -1);
	}
break;

// Place your own states below. Give each a number at least 10.
beginstate 10;
	// use werdna's amulet
	i = who_used_custom_item();
	print_named_str(i, "uses the amulet!");
	print_named_str(i, "feels completely rejuvenated.");
	put_sparkles_on_char(i, 0, 6);
	run_animation_sound(60);
	restore_pc(i);
	restore_energy_char(i, 100);
break;

// --- PIT! ---
beginstate 11;
	print_str_color("* * * PIT! * * *", 3);
	play_sound(63);
	play_sound(-76);
	i = 0;
	while (i < 4) {
		if (char_ok(i) == TRUE) {
			damage_char(i, get_ran(1, 1, 20), 4);
		}
		i = i + 1;
	}
break;

// --- no magic floor - remove spell energy... ---
beginstate 12;
	i = 0;
	while (i < 4) {
		if (char_ok(i) == TRUE) {
			e = get_energy(i);
			if (e > 0) {
				e = 0 - e;
				change_char_energy(i, e);
			}
		}
		i = i + 1;
	}
break;

// -- monster balancing code and 'generation flag sets' --
//  not used for dungeon level 10 (always generates)
beginstate 13;
	// balance the monsters on this level to party (max) level
	//  x = dungeon level
	//  do this one time only (first time entering a level/regenerating a level)...
	set_flag(x, 27, 1);
	// get max party level
	i = 0;
	lvl = 0;
	while (i < 4) {
		if (char_ok(i) == TRUE) {
			e = get_level(i);
			if (e > lvl) {
				lvl = e;
			}
		}
		i = i + 1;
	}
	// check max level monster levels in dungeon...
	i = bg;
	while (i < en) {
		if (char_ok(i) == TRUE) {
			e = get_level(i);
			if (lvl > e) {
				tt = lvl - e;
				if (tt > 5)
					tt = tt / 4;
				else
					tt = 1;
				// monster level = cur lvl + 0..delta + [0-8]
				mlvl = e + get_ran(1, 0, tt) + (x - 1);
				if (mlvl <= 100)
					set_level(i, mlvl);
				else
					set_level(i, 100);
			}
			else {
				// lower the level of the creatures
				if (lvl > 10) {
					tt = e - get_ran(1, 1, 12);
					set_level(i, tt);
				}
				else {
					set_level(i, lvl);
				}
			}
		}
		i = i + 1;
	}
break;

beginstate 14;
	// check to see if need to 'roll' new monsters for level
	//  x = dungeon level
	if (get_flag(x, 28) == 0) {
		e = 0;
		i = 6;
		while (i < 86) {
			if (char_ok(i) == TRUE) {
				e = 1;
				i = 85;
			}
			i = i + 1;
		}
		// no more preset - send back need to generate some...
		if (e == 0) {
			set_flag(x, 28, 1);
			set_flag(x, 29, 1);
		}
	}
	else if (get_flag(x, 29) == 0) {
		// code not really needed, will always be generating more
		// due to 'place_monster' mons not being kept between levels.
		// - unless saving on 'generating' level, in which case won't generate again
		e = 0;
		i = 86;
		while (i < 120) {
			if (char_ok(i) == TRUE) {
				e = 1;
				i = 119;
			}
			i = i + 1;
		}
		// need to/can generate more
		if (e == 0) {
			set_flag(x, 29, 1);
		}
	}
break;

beginstate 15;
	x = 1;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

beginstate 16;
	x = 2;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

beginstate 17;
	x = 3;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

beginstate 18;
	x = 4;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

beginstate 19;
	x = 5;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

beginstate 20;
	x = 6;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

beginstate 21;
	x = 7;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

beginstate 22;
	x = 8;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

beginstate 23;
	x = 9;
	if (get_flag(x, 27) == 0) {
		bg = 6;
		en = 86;
		set_state_continue(13);
	}
	else {
		set_state_continue(14);
	}
break;

// state used for monster generation in level 10
// - uses flags 10, 3 - 10, 8
beginstate 24;
	i = 3;
	while (i < 9) {
		set_flag(10, i, 0);
		i = i + 1;
	}
	j = get_ran(1, 5, 9); // 2 - 6 creatures will be generated
	i = 3;
	while (i < j) {
		e = get_ran(1, 1, 27);
		if (e <= 3) {
			set_flag(10, i, 112); // arch mage
		}
		else if ((e == 4) || (e == 5) || (e == 6)) {
			set_flag(10, i, 26); // high priest
		}
		else if ((e == 7) || (e == 8) || (e == 9)) {
			set_flag(10, i, 116); // high ninja
		}
		else if ((e == 10) || (e == 11) || (e == 12)) {
			set_flag(10, i, 31); // master thief
		}
		else if ((e == 13) || (e == 14) || (e == 15)) {
			set_flag(10, i, 36); // major daimyo
		}
		else if ((e == 16) || (e == 17) || (e == 18)) {
			set_flag(10, i, 180); // fighter
		}
		else if (e == 19) {
			set_flag(10, i, 61); // greater demon
		}
		else if (e == 20) {
			set_flag(10, i, 101); // fire dragon
		}
		else if (e == 21) {
			set_flag(10, i, 174); // fire giant
		}
		else if (e == 22) {
			set_flag(10, i, 234); // dragon zombie
		}
		else if (e == 23) {
			set_flag(10, i, 173); // maelific
		}
		else if (e == 24) {
			set_flag(10, i, 41); // frost giant
		}
		else if (e == 25) {
			set_flag(10, i, 211); // raver lord
		}
		else if (e == 26) {
			set_flag(10, i, 135); // poison giant
		}
		else { // e == 27
			set_flag(10, i, 172); // flack
		}
		i = i + 1;
	}
break;

// clear out monsters already generated (j.i.c.)
beginstate 25;
	i = 86;
	while (i < 120) {
		if (char_ok(i) == TRUE) {
			kill_char(i, 2, 0);
		}
		i = i + 1;
	}
break;

// ------------------------------------------------------------
// nodes to call to generate new monsters in levels 1 through 9
//  after calling, 100, 0 = monster, 100, 1 = x loc, 100, 2 = y loc
//

// set monster placement flags
beginstate 26;
	i = 0;
	j = 0;
	set_flag(100, 1, 0);
	set_flag(100, 2, 0);
	while ((i == 0) && (j < 100)) {
		// all levels are 'medium' towns...
		x = get_ran(1, 5, 42);
		y = get_ran(1, 5, 42);
		// check x and y
		e = get_floor(x, y);
		tt = get_terrain(x, y);
		if ((((e >= 0) && (e <= 22)) || ((e >= 37) && (e <= 56)) ||
		    ((e >= 72) && (e <= 78)) || ((e >= 81) && (e <= 91)) ||
		    ((e >= 95) && (e <= 123))) &&
		    ((tt == 0) || ((tt >= 2) && (tt <= 121)) || ((tt >= 137) && (tt <= 146)) ||
		    ((tt >= 155) && (tt <= 165))) &&
		    (is_blocked(x, y) == FALSE) && (char_on_loc(x, y) == -1)) {
			i = 1;
		}
		// set placement location
		if (i == 1) {
			set_flag(100, 1, x);
			set_flag(100, 2, y);
		}
		j = j + 1;
	}
break;

// level 1 monsters
beginstate 27;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 14);
	if (e == 1) {
		set_flag(100, 0, 21); // orc
	}
	else if (e == 2) {
		set_flag(100, 0, 195); // bubbly slime
	}
	else if (e == 3) {
		set_flag(100, 0, 15); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 129); // kobold
	}
	else if (e == 5) {
		set_flag(100, 0, 13); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 209); // undead kolbold
	}
	else if (e == 7) {
		set_flag(100, 0, 93); // gas cloud
	}
	else if (e == 8) {
		set_flag(100, 0, 43); // zombie
	}
	else if (e == 9) {
		set_flag(100, 0, 7); // rogue
	}
	else if (e == 10) {
		set_flag(100, 0, 133); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 47); // rotting corpse
	}
	else if (e == 12) {
		set_flag(100, 0, 57); // dragon fly
	}
	else if (e == 13) {
		set_flag(100, 0, 238); // vorpal bunny
	}
	else { // e == 14
		set_flag(100, 0, 73); // highwayman
	}
break;

// level 2 monsters
beginstate 28;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 15);
	if (e == 1) {
		set_flag(100, 0, 21); // orc
	}
	else if (e == 2) {
		set_flag(100, 0, 197); // creeping coins
	}
	else if (e == 3) {
		set_flag(100, 0, 15); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 129); // kobold
	}
	else if (e == 5) {
		set_flag(100, 0, 13); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 209); // undead kolbold
	}
	else if (e == 7) {
		set_flag(100, 0, 67); // huge spider
	}
	else if (e == 8) {
		set_flag(100, 0, 43); // zombie
	}
	else if (e == 9) {
		set_flag(100, 0, 7); // rogue
	}
	else if (e == 10) {
		set_flag(100, 0, 133); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 47); // rotting corpse
	}
	else if (e == 12) {
		set_flag(100, 0, 57); // dragon fly
	}
	else if (e == 13) {
		set_flag(100, 0, 238); // vorpal bunny
	}
	else if (e == 14) {
		set_flag(100, 0, 123); // champ samurai
	}
	else { // e == 15
		set_flag(100, 0, 124); // bushwacker
	}
break;

// level 3 monsters
beginstate 29;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 15);
	if (e == 1) {
		set_flag(100, 0, 38); // giant toad
	}
	else if (e == 2) {
		set_flag(100, 0, 191); // coyote
	}
	else if (e == 3) {
		set_flag(100, 0, 107); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 129); // kobold
	}
	else if (e == 5) {
		set_flag(100, 0, 22); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 19); // thief
	}
	else if (e == 7) {
		set_flag(100, 0, 67); // huge spider
	}
	else if (e == 8) {
		set_flag(100, 0, 43); // zombie
	}
	else if (e == 9) {
		set_flag(100, 0, 7); // rogue
	}
	else if (e == 10) {
		set_flag(100, 0, 113); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 46); // spirit
	}
	else if (e == 12) {
		set_flag(100, 0, 57); // dragon fly
	}
	else if (e == 13) {
		set_flag(100, 0, 176); // wererat
	}
	else if (e == 14) {
		set_flag(100, 0, 123); // champ samurai
	}
	else { // e == 15
		set_flag(100, 0, 124); // bushwacker
	}
break;

// level 4 monsters
beginstate 30;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 14);
	if (e == 1) {
		set_flag(100, 0, 38); // giant toad
	}
	else if (e == 2) {
		set_flag(100, 0, 191); // coyote
	}
	else if (e == 3) {
		set_flag(100, 0, 107); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 11); // priestess
	}
	else if (e == 5) {
		set_flag(100, 0, 22); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 19); // thief
	}
	else if (e == 7) {
		set_flag(100, 0, 67); // huge spider
	}
	else if (e == 8) {
		set_flag(100, 0, 108); // mage
	}
	else if (e == 9) {
		set_flag(100, 0, 120); // shade
	}
	else if (e == 10) {
		set_flag(100, 0, 114); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 46); // spirit
	}
	else if (e == 12) {
		set_flag(100, 0, 176); // wererat
	}
	else if (e == 13) {
		set_flag(100, 0, 123); // champ samurai
	}
	else { // e == 14
		set_flag(100, 0, 131); // swordsman
	}
break;

// level 5 monsters
beginstate 31;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 14);
	if (e == 1) {
		set_flag(100, 0, 239); // samurai
	}
	else if (e == 2) {
		set_flag(100, 0, 186); // gaze hound
	}
	else if (e == 3) {
		set_flag(100, 0, 108); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 11); // priestess
	}
	else if (e == 5) {
		set_flag(100, 0, 23); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 28); // thief
	}
	else if (e == 7) {
		set_flag(100, 0, 223); // attack dog
	}
	else if (e == 8) {
		set_flag(100, 0, 125); // bishop
	}
	else if (e == 9) {
		set_flag(100, 0, 120); // shade
	}
	else if (e == 10) {
		set_flag(100, 0, 114); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 232); // grave mist
	}
	else if (e == 12) {
		set_flag(100, 0, 32); // ogre
	}
	else if (e == 13) {
		set_flag(100, 0, 123); // champ samurai
	}
	else { // e == 14
		set_flag(100, 0, 131); // swordsman
	}
break;

// level 6 monsters
beginstate 32;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 14);
	if (e == 1) {
		set_flag(100, 0, 239); // samurai
	}
	else if (e == 2) {
		set_flag(100, 0, 224); // werewolf
	}
	else if (e == 3) {
		set_flag(100, 0, 109); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 84); // medusalizard
	}
	else if (e == 5) {
		set_flag(100, 0, 24); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 29); // thief
	}
	else if (e == 7) {
		set_flag(100, 0, 69); // giant spider
	}
	else if (e == 8) {
		set_flag(100, 0, 125); // bishop
	}
	else if (e == 9) {
		set_flag(100, 0, 120); // shade
	}
	else if (e == 10) {
		set_flag(100, 0, 115); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 232); // grave mist
	}
	else if (e == 12) {
		set_flag(100, 0, 32); // ogre
	}
	else if (e == 13) {
		set_flag(100, 0, 145); // gargoyle
	}
	else { // e == 14
		set_flag(100, 0, 179); // fighter
	}
break;

// level 7 monsters
beginstate 33;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 14);
	if (e == 1) {
		set_flag(100, 0, 34); // samurai
	}
	else if (e == 2) {
		set_flag(100, 0, 193); // werebear
	}
	else if (e == 3) {
		set_flag(100, 0, 110); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 84); // medusalizard
	}
	else if (e == 5) {
		set_flag(100, 0, 24); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 29); // thief
	}
	else if (e == 7) {
		set_flag(100, 0, 169); // boring beetle
	}
	else if (e == 8) {
		set_flag(100, 0, 125); // bishop
	}
	else if (e == 9) {
		set_flag(100, 0, 167); // gas dragon
	}
	else if (e == 10) {
		set_flag(100, 0, 115); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 139); // life stealer
	}
	else if (e == 12) {
		set_flag(100, 0, 122); // night stalker
	}
	else if (e == 13) {
		set_flag(100, 0, 145); // gargoyle
	}
	else { // e == 14
		set_flag(100, 0, 179); // fighter
	}
break;

// level 8 monsters
beginstate 34;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 14);
	if (e == 1) {
		set_flag(100, 0, 35); // samurai
	}
	else if (e == 2) {
		set_flag(100, 0, 245); // killer wolf
	}
	else if (e == 3) {
		set_flag(100, 0, 111); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 167); // gas dragon
	}
	else if (e == 5) {
		set_flag(100, 0, 25); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 30); // thief
	}
	else if (e == 7) {
		set_flag(100, 0, 246); // troll
	}
	else if (e == 8) {
		set_flag(100, 0, 27); // bishop
	}
	else if (e == 9) {
		set_flag(100, 0, 80); // weretiger
	}
	else if (e == 10) {
		set_flag(100, 0, 116); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 33); // ogre lord
	}
	else if (e == 12) {
		set_flag(100, 0, 88); // dragon puppy
	}
	else if (e == 13) {
		set_flag(100, 0, 220); // chimara
	}
	else { // e == 14
		set_flag(100, 0, 180); // fighter
	}
break;

// level 9 monsters
beginstate 35;
	set_flag(100, 0, 0);
	e = get_ran(1, 1, 14);
	if (e == 1) {
		set_flag(100, 0, 36); // samurai
	}
	else if (e == 2) {
		set_flag(100, 0, 230); // gorgan
	}
	else if (e == 3) {
		set_flag(100, 0, 112); // mage
	}
	else if (e == 4) {
		set_flag(100, 0, 227); // wyvern
	}
	else if (e == 5) {
		set_flag(100, 0, 26); // priest
	}
	else if (e == 6) {
		set_flag(100, 0, 31); // thief
	}
	else if (e == 7) {
		set_flag(100, 0, 181); // fighter
	}
	else if (e == 8) {
		set_flag(100, 0, 27); // bishop
	}
	else if (e == 9) {
		set_flag(100, 0, 122); // nightstalker
	}
	else if (e == 10) {
		set_flag(100, 0, 117); // ninja
	}
	else if (e == 11) {
		set_flag(100, 0, 33); // ogre lord
	}
	else if (e == 12) {
		set_flag(100, 0, 87); // vampire
	}
	else if (e == 13) {
		set_flag(100, 0, 39); // earth giant
	}
	else { // e == 14
		set_flag(100, 0, 180); // fighter
	}
break;

// -- generated monster balancing code (one for each level) --
// level 1
beginstate 36;
	x = 1;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;

// level 2
beginstate 37;
	x = 2;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;

// level 3
beginstate 38;
	x = 3;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;

// level 4
beginstate 39;
	x = 4;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;

// level 5
beginstate 40;
	x = 5;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;

// level 6
beginstate 41;
	x = 6;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;

// level 7
beginstate 42;
	x = 7;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;

// level 8
beginstate 43;
	x = 8;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;

// level 9
beginstate 44;
	x = 9;
	bg = 86;
	en = 120;
	set_state_continue(13);
break;
